package net.sunofbeach;

        import com.baomidou.mybatisplus.annotation.DbType;
        import com.baomidou.mybatisplus.annotation.IdType;
        import com.baomidou.mybatisplus.generator.AutoGenerator;
        import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
        import com.baomidou.mybatisplus.generator.config.GlobalConfig;
        import com.baomidou.mybatisplus.generator.config.PackageConfig;
        import com.baomidou.mybatisplus.generator.config.StrategyConfig;
        import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
        import org.junit.Test;

/**
 * @author bing_  @create 2021/11/23-23:05
 */
public class CodeGenerator {

    @Test
    public void run() {
        // 创建 generator 对象
        AutoGenerator autoGenerator = new AutoGenerator();
        // 数据源
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/sob_blog_system?serverTimezone=GMT%2B8");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("Bing_yu2001");
        autoGenerator.setDataSource(dataSourceConfig);
        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("D:\\Code\\Java\\SobBlogSystem\\src\\main\\java");
        // globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");//指定代码生成存放位置
        globalConfig.setOpen(false); // 创建完成不用打开文件夹
        globalConfig.setAuthor("Bing"); // 作者，不写用当前计算机用户名
        globalConfig.setServiceName("%sService"); // 去掉 I
        globalConfig.setIdType(IdType.ASSIGN_ID);// id 主键策略
        //globalConfig.setDateType(DateType.ONLY_DATE); // 定义生成的实体类中日期类型
        globalConfig.setSwagger2(true);// 开启Swaggers模式
        autoGenerator.setGlobalConfig(globalConfig);
        // 包信息
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("net.sunofbeach"); // 父包
        packageConfig.setModuleName("blog"); // 父包下新建 generator 包,不配置为根目录下
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setMapper("mapper");
        packageConfig.setEntity("pojo");
        autoGenerator.setPackageInfo(packageConfig);
        // 配置策略
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setInclude("tb_category"); // 表名；生成多张表用 , 隔开
        // strategyConfig.setInclude("user","product"); // 生成多张表格式
        strategyConfig.setTablePrefix("tb"+"_"); // 生成时去掉表前缀 edu,根据实际情况填写
        strategyConfig.setRestControllerStyle(true); //restful api风格控制器 返回json
        strategyConfig.setEntityLombokModel(true); // 自动添加 Lombok 注解
        strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 表字段下划线转驼峰
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 表字段下划线转驼峰
        autoGenerator.setStrategy(strategyConfig);

        autoGenerator.execute();
    }
}